package cate.game.pvp.eliterace.handler;

import cate.game.GameBody;
import cate.game.pvp.eliterace.data.*;
import cate.game.pvp.eliterace.handler.EliteRaceRankRwdOperation.QueryParam;
import cate.game.role.Role;
import cate.game.role.RoleSnapshot;
import cate.game.role.pvp.eliterace.msg.*;
import easy.java.practice.errorcode.EcResult;

import java.util.List;
import java.util.Map;

public interface EliteRaceMessageHandler {
    default EcResult<EliteRaceBetRoundResp> handleBetRoundReq(EliteRaceBetRoundReq req) {
        return new EcResult<>();
    }

    default EcResult<EliteRaceBetRoundReportResp> handleBetRoundReportReq(EliteRaceBetRoundReportReq req) {
        return new EcResult<>();
    }

    default EcResult<EliteRaceRoundResp> handleRoundReq(String uid, EliteRaceRoundReq req) {
        return new EcResult<>();
    }

    default EcResult<EliteRaceRoundReportResp> handleRoundReportReq(String uid, EliteRaceRoundReportReq req) {
        return new EcResult<>();
    }

    default EcResult<EliteRaceGroupRoundResp> handleGroupRoundReq(EliteRaceGroupRoundReq req) {
        return new EcResult<>();
    }

    default EcResult<EliteRaceGroupRoundReportResp> handleGroupRoundReportReq(EliteRaceGroupRoundReportReq req) {
        return new EcResult<>();
    }

    default boolean hasRecvdRedPacket(String uid, EliteRaceSpec spec) {
        return false;
    }

    default EcResult<EliteRaceGetPsResp> handleGetPsReq(EliteRaceGetPsReq req) {
        return new EcResult<>();
    }

    default EcResult<List<EliteRaceOpponent>> handleQueryPs(int srvId) {
        return new EcResult<>();
    }

    default EcResult<EliteRaceBetRecord> handleBetReq(EliteRaceSpec spec, EliteRaceBetReq req) {
        return new EcResult<>();
    }

    default EcResult<EliteRaceBetRecord> handleGetBetRecord(EliteRaceSpec spec) {
        return new EcResult<>();
    }

    default EcResult<List<EliteRaceRedPacketRecord>> handleGetRedPacket(RoleSnapshot snapshot, EliteRaceSpec spec, GameBody game) {
        return new EcResult<>();
    }

    default EcResult<List<EliteRaceRedPacketRecord>> handleQueryRedPacket(EliteRaceSpec spec, String uid) {
        return new EcResult<>();
    }

    default EcResult<List<EliteRaceRankRwd>> handleQueryRankRwd(QueryParam param) {
        return new EcResult<>();
    }

    default EcResult<Map<String, String>> handleQueryPlayers(int srvId, EliteRaceSpec spec) {
        return new EcResult<>();
    }

    default EcResult<Void> handleUpdatePs(EliteRaceSpec spec, EliteRacePs eps) {
        return new EcResult<>();
    }

    default EcResult<List<EliteRaceBetRecord>> handleQueryAll() {
        return new EcResult<>();
    }
}
